Численное дифференцирование
Численное дифференцирование — совокупность методов приближённого вычисления значения производной некоторой функции, заданной таблично или имеющей сложное аналитическое выражение.
Конечные разности
Производная функции [math]\displaystyle{ f }[/math] в точке [math]\displaystyle{ x }[/math] определяется с помощью предела:
- [math]\displaystyle{ f'(x) = \lim_{h\to0} \frac{f(x+h) - f(x)}{h}. }[/math]
В числителе дроби под знаком предела стоит конечная разность функции [math]\displaystyle{ f }[/math], в знаменателе — шаг этой разности. Поэтому простейшим методом аппроксимации производной является использование конечных разностей функции [math]\displaystyle{ f }[/math] с некоторым достаточно малым шагом [math]\displaystyle{ h }[/math]. Например, выражение
- [math]\displaystyle{ \frac{f(x+h) - f(x)}{h} }[/math]
приближает производную функции [math]\displaystyle{ f }[/math] в точке [math]\displaystyle{ x }[/math] с точностью до величины, пропорциональной [math]\displaystyle{ h }[/math]. Использование выражения
- [math]\displaystyle{ \frac{f(x+h) - f(x-h)}{2h} }[/math]
позволяет сократить ошибку приближения до величины, пропорциональной [math]\displaystyle{ h^2 }[/math].
Конечными разностями можно также приближать производные высших порядков.
Интерполяция
Если известны значения функции [math]\displaystyle{ f }[/math] в некоторых узлах [math]\displaystyle{ x_0, x_1, \ldots , x_N }[/math], то можно построить интерполяционный полином [math]\displaystyle{ P_N(x) }[/math] (например, в форме Лагранжа или в форме Ньютона) и приближенно положить
- [math]\displaystyle{ f^{(r)}(x)\approx P^{(r)}_N(x), \; 0 \leq r \leq N. }[/math]
Такие выражения называются формулами численного дифференцирования.
Иногда наряду с приближенным равенством удаётся (например, используя формулу Тейлора) получить точное равенство, содержащее остаточный член [math]\displaystyle{ R(x) }[/math], называемый погрешностью численного дифференцирования:
- [math]\displaystyle{ f^{(r)}(x)=P^{(r)}_N(x)+R(x), \; 0 \leq r \leq N. }[/math]
Такие выражения называются формулами численного дифференцирования с остаточными членами. Степень, с которой величина [math]\displaystyle{ h = \mbox{max} \{ x_i-x_{i-1} \, | \, i = 1,\ldots,N \} }[/math] входит в остаточный член, называется порядком погрешности формулы численного дифференцирования.
Далее приводятся несколько формул численного дифференцирования с остаточными членами для первой [math]\displaystyle{ ({r=1}) }[/math] и второй [math]\displaystyle{ ({r=2}) }[/math] производных для равноотстоящих узлов с постоянным шагом [math]\displaystyle{ {h\gt 0} }[/math], полученных с использованием формулы Лагранжа:
- [math]\displaystyle{ r=1, \; N=1 }[/math] (два узла):
- [math]\displaystyle{ f'(x_0) = \frac{f_1 - f_0}{h} - \frac{h}{2} f''(\xi), }[/math]
- [math]\displaystyle{ f'(x_1) = \frac{f_1 - f_0}{h} + \frac{h}{2} f''(\xi). }[/math]
- [math]\displaystyle{ r=1, \; N=2 }[/math] (три узла):
- [math]\displaystyle{ f'(x_0) = \frac{-3f_0 + 4f_1 - f_2}{2h} + \frac{h^2}{3} f'''(\xi), }[/math]
- [math]\displaystyle{ f'(x_1) = \frac{f_2 - f_0}{2h} - \frac{h^2}{6} f'''(\xi), }[/math]
- [math]\displaystyle{ f'(x_2) = \frac{f_0 - 4f_1 + 3f_2}{2h} + \frac{h^2}{3} f'''(\xi). }[/math]
- [math]\displaystyle{ r=2, \; N=2 }[/math] (три узла):
- [math]\displaystyle{ f''(x_0) = \frac{f_0 - 2f_1 + f_2}{h^2} - hf'''(\xi), }[/math]
- [math]\displaystyle{ f''(x_1) = \frac{f_0 - 2f_1 + f_2}{h^2} - \frac{h^2}{12} f^{(4)}(\xi), }[/math]
- [math]\displaystyle{ f''(x_2) = \frac{f_0 - 2f_1 + f_2}{h^2} + hf'''(\xi). }[/math]
- [math]\displaystyle{ r=2, \; N=3 }[/math] (четыре узла):
- [math]\displaystyle{ f''(x_0) = \frac{2f_0 - 5f_1 + 4f_2 - f_3}{h^2} + \frac{11h^2}{12} f^{(4)}(\xi), }[/math]
- [math]\displaystyle{ f''(x_1) = \frac{f_0 - 2f_1 + f_2}{h^2} - \frac{h^2}{12} f^{(4)}(\xi), }[/math]
- [math]\displaystyle{ f''(x_2) = \frac{f_1 - 2f_2 + f_3}{h^2} - \frac{h^2}{12} f^{(4)}(\xi), }[/math]
- [math]\displaystyle{ f''(x_3) = \frac{-f_0 + 4f_1 - 5f_2 + 2f_3}{h^2} + \frac{11h^2}{12} f^{(4)}(\xi). }[/math]
Здесь [math]\displaystyle{ f_i = f(x_i) }[/math], [math]\displaystyle{ i = 0,\ldots,N }[/math], а [math]\displaystyle{ \xi }[/math] — некоторая промежуточная точка между наибольшим и наименьшим из узлов.
В общем случае коэффициенты формул численного дифференцирования можно вычислить для произвольной сетки узлов и любого порядка производной.
Неустранимая погрешность
В формулах численного дифференцирования с постоянным шагом [math]\displaystyle{ h }[/math] значения функции [math]\displaystyle{ f }[/math] делятся на [math]\displaystyle{ h^r }[/math], где [math]\displaystyle{ r }[/math] — порядок вычисляемой производной. Поэтому при малом [math]\displaystyle{ h }[/math] неустранимые погрешности в значениях функции [math]\displaystyle{ f }[/math] оказывают сильное влияние на результат численного дифференцирования. Таким образом, возникает задача выбора оптимального шага [math]\displaystyle{ h }[/math], так как погрешность собственно метода стремится к нулю при [math]\displaystyle{ h\to{0} }[/math], а неустранимая погрешность растет. В результате общая погрешность, которая возникает при численном дифференцировании, может неограниченно возрастать при [math]\displaystyle{ h\to{0} }[/math]. Поэтому задача численного дифференцирования считается некорректно поставленной.
Комплексные числа
Классические приближения конечными разностями содержат неустранимую погрешность и являются плохо обусловленными. Однако, если функция [math]\displaystyle{ f }[/math] является голоморфной, принимает вещественные значения на вещественной прямой и может быть оценена в любой окрестности любой вещественной точки комплексной плоскости, то её производная может быть вычислена устойчивыми методами. Например, первую производную можно сосчитать по формуле с комплексным шагом[1]:
- [math]\displaystyle{ f'(x) = \frac{\mbox{Im}(f(x + ih))}{h} + O \left( h^2 \right), }[/math]
где [math]\displaystyle{ i }[/math] — мнимая единица. Эту формулу можно получить из следующего разложения в ряд Тейлора:
- [math]\displaystyle{ f(x+ih) = f(x)+ihf'(x)-h^2\frac{f''(x)}{2!}-ih^3\frac{f'''(x)}{3!}+\ldots. }[/math]
В общем случае производные произвольного порядка можно вычислить с помощью интегральной формулы Коши:
- [math]\displaystyle{ f^{(n)}(a) = \frac{n!}{2\pi i} \oint_\gamma \frac{f(z)}{(z - a)^{n+1}} \,\mathrm{d}z. }[/math]
Интеграл можно вычислять приближённо.
Литература
- Бахвалов Н. С., Жидков Н. П., Кобельков Г. М. Численные методы. — 3-е изд., доп. и перераб. — М.: БИНОМ. Лаборатория знаний, 2004. — 636 с., илл. — ISBN 5-94774-175-X.
- Березин, И. С., Жидков Н. П. Методы вычислений. Том I. — 2-е изд., стереотипное – М.: Физматгиз. 1962.
- Мысовских И.П. Лекции по методам вычислений. – М.: Наука. 1982. – 342 с.
Примечания
См. также
Для улучшения этой статьи по математике желательно: |